<script type="text/javascript">function sortNumber(a,b){return a - b}var arr = new Array(6)arr[0] =
来源:百度知道 编辑:UC知道 时间:2024/05/15 05:58:13
function sortNumber(a,b)
{return a - b}
var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"
document.write(arr + "<br />")
document.write(arr.sort(sortNumber))
</script>
中sortNumber有有什么作用的?
arr.sort(sortNumber)
这里的sortNumber可以理解为成C++中的仿函数,传递的是一个函数对象,sort函数里面会调用它,并传递给它2个参数。sortNumber函数要求返回正、负或零值。sort函数可能是使用qsort实现的,网上有很多资料,自己实现一个也不难。
简单实现了一个,没有处理默认参数,比如arr.sort(),可以不传递这个参数,我没有处理它。#符号是为了保持格式,不过页面上显示不了,可能是字体不对。
注:修改了一下,可以处理默认参数。
< script type="text/javascript" >
function sortNumber(a,b)
{
return a-b;
}
function swap (arr, idx1, idx2) {
var tmp = arr[idx1];
arr[idx1] = arr[idx2];
arr[idx2] = tmp;
}
function qsort (arr, l, r, sortFunction) {
if (l >= r)
return;
if (r-l == 1)
{
if (sortFunction(arr[r], arr[l]) < 0)
swap(arr, l, r);
return;
}
var pivot = l + Math.round((r-l) / 2);
swap(arr, l, pivot);
var pointer = l+1;
for (var i=l+1; i<=r; ++i){
if (i != pointer && sortFunction(arr[i], arr[l]) < 0){
swap (arr, pointer++, i);